import { request } from "../../utils/request";

Page({

  /**
   * 页面的初始数据
   */
  data: {
    currentImageIndex: 0, //当前商品轮播图索引
    totalSwiperImage: 0, //总共商品轮播图
    productDetail: {}, //商品详情数据
    activeTab: "0", //默认的内容标签
    cartCount: 0, //购物车的商品数
    isLogin: false, //控制购物按钮和登录按钮
    showLogin: false //控制登录模态框
  },

  /**
   * 切换标签页
   */
  changeTab(options) {
    //获取当前点击的tab索引
    let index = options.currentTarget.dataset.index
    //设置当前切换的标签页索引
    this.setData({
      activeTab: index,
    })

    //获取视图界面的滚动条偏移
    wx.createSelectorQuery().selectViewport().scrollOffset(res => {
      //获取当前滚动条位置
      let scrollTopIndex = res.scrollTop
      //如果滚动条距离大于575意味着触发了粘性定位，那么则是直接滚动到内容区的开头
      if (scrollTopIndex >= 575) {
        wx.pageScrollTo({
          selector: ".jump-index",
          duration: 300
        })
      }
    }).exec();
  },

  /**
   * 轮播图索引切换
   */
  swiperChange(event) {
    this.setData({
      currentImageIndex: event.detail.current
    })
  },

  /**
  * 加载商品详情数据
  */
  async loadProductDetail(productId) {
    const res = await request({ url: `/product/getProductDetail/${productId}`, method: "GET" })
    this.setData({
      productDetail: res.data.data,
      totalSwiperImage: res.data.data.swiperImgs.length
    })
  },

  /**
   * 处理添加购物车事件
   */
  async handlerAddCart() {
    //获取当前用户登录的token
    const { token } = wx.getStorageSync("user")
    //添加购物车
    let cartItem = {
      productId: this.data.productDetail.id,
      num: 1
    }
    const res = await request({ url: "/cart/addToCart/", method: "POST", header: { "Authorization": token }, data: cartItem })
    if (res.data.state === 0) {
      this.setData({
        cartCount: this.data.cartCount + 1
      })
      //成功弹框
      wx.showToast({
        title: "添加成功",
        mask: true
      })
    } else {
      //失败弹框
      wx.showToast({
        title: res.data.message,
        mask: true
      })
    }
  },

  /**
   * 处理立即购买事件
   */
  async handlerBuyNow() {
     //跳转到结算页,orderType=1代表立即购买
     wx.navigateTo({
      url: `/pages/pay/pay?orderType=1&productId=${this.data.productDetail.id}`
    })
  },

  /**
   * 加载购物车信息
   */
  async loadCartInfo() {
    let cart = []
    const { token } = wx.getStorageSync("user")
    const res = await request({ url: "/cart/listCart/", method: "GET", header: { "Authorization": token } })
    if (res.data.state === 0) {
      cart = res.data.data
    }
    //计算购物车商品数
    this.computedCart(cart)
  },

  /**
   * 计算购物车的商品数
   */
  computedCart(cart) {
    //获取购物车的商品总数
    let count = 0;
    if (cart) {
      cart.map(v => { count = v.num + count })
    }
    this.setData({
      cartCount: count
    })
  },

  /**
   * 处理立即登录事件
   */
  handlerLogin() {
    this.setData({
      showLogin: true
    })
  },

  /**
   * 处理登录授权
   * @param {*} event 
   */
  handlerLoginChange(event) {
    const newVal = event.detail.newVal;
    if (newVal) {
      //检查用户是否有授权登录
      const user = wx.getStorageSync("user")
      if (user) {
        //设置登录显示按钮为true
        this.setData({
          isLogin: true
        })
        //加载购物车数据
        this.loadCartInfo()
      } else {
        this.setData({
          isLogin: false
        })
      }
    }
  },

  /**
  * 生命周期函数--监听页面加载
  */
  onLoad: function (options) {
    //获取带过来的商品id
    const productId = options.productId
    //获取商品数据
    this.loadProductDetail(productId)
    //检查用户是否有授权登录
    const user = wx.getStorageSync("user")
    if (user) {
      //设置登录显示按钮为true
      this.setData({
        isLogin: true
      })
      //发送请求获取用户购物车数据
      this.loadCartInfo()
    }
  }
})